package cn.han.io;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class Testin {
    public static class TestIn {
        public static void main(String[] args) {
            method1();//使用普通的字节输入流读取文件
            method2();//使用高效的字节输入流读取文件
        }

        private static void method2() {
            //1.创建高效字节流对象
            InputStream bis =null;
            try{
                //            bis = new BufferedInputStream(new FileInputStream(new File("D:\\ready\\5.txt")));
                bis = new BufferedInputStream(new FileInputStream("D:\\ready\\5.txt"));
                //2.使用流对象
                int b;
                while ((b=bis.read())!=-1){
                    System.out.println(b);
                }
            }catch (IOException e){

            }finally {
                //3.关闭流对象
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        private static void method1() {
            //1.创建流对象--字节输入流InputStream--抽象父类不可实例化
            //FileInputStream--插在文件上对文件做操作的字节输入流
            InputStream in = null;
            try{
                //            in = new FileInputStream(new File("D:\\ready\\5.txt"));
                in = new FileInputStream("D:\\ready\\5.txt");
                //2.使用流对象
                /**read()一次只能读取一个字节，并且这个方法的返回值类型是int
                 * 也就是说会到码表中查看字符对应的编码，比如读到字符a，控制台打印97
                 * 如果文件没有数据了，也就是读到文件的末尾，这个方法返回-1*/
                /*需求：需要使用循环结构读取文件中的所有内容，直至读完
                 * 定义变量，用来保存读到的数据
                 * 流的方向是单向的，只能从头到尾读取一次*/
                int b;
                while ((b = in.read())!=-1){
                    System.out.println(b);
                }
            }catch(IOException e){
                e.printStackTrace();//如果捕获到异常，打印错误信息到控制台

            }finally {
                //3.关闭流对象
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
